clear; clc; close all;

% 系统固定参数
u  = -0.1;
a  = -0.85;
b_ = 0.1;    % 命名为 b_ 避免和关键字冲突
x0 = 0.1;
q0 = 0.1;
f  = @nhmm; 
Ntotal   = 1200;   % 总迭代步数
Ndiscard = 200;    % 舍弃前 200 步
Nkeep    = 1000;    % 后 100 步用于分岔图

% k 从 1.8 到 2.2
kVals = linspace(1.8, 2.2, 601);

% 用于存放 LE1, LE2
LE1 = zeros(size(kVals));
LE2 = zeros(size(kVals));

% 用于存放分岔图 (k, q)
bifData = [];

% 遍历 k, 计算李雅普诺夫指数 & 分岔图数据
for i = 1:length(kVals)
    k = kVals(i);

    % 1) 计算李雅普诺夫指数
    [le1, le2] = LEs2D(f, u, k, a, b_, x0, q0, Ntotal, Ndiscard);
    LE1(i) = le1;
    LE2(i) = le2;

    % 2) 多步迭代系统, 取后 Nkeep 步的 q
    [~, qArr] = iterate_nhmm(u, k, a, b_, x0, q0, Ntotal);
    qSegment  = qArr(end - Nkeep + 1 : end);

    % 将 (k, q) 数据收集
    bifData = [bifData; k * ones(Nkeep,1), qSegment(:)];
end

sgtitle(' NHMM 模型');

% (a) 李指数随 k 的变化
subplot(2,1,1);
plot(kVals, LE1, 'r-', 'LineWidth',1); hold on;
plot(kVals, LE2, 'b-','LineWidth',1);
yline(0, '--k', 'LineWidth',1.0);  % 添加0刻度线
xlabel('k');
ylabel(' LEs ');
title(' LEs 指数随 k 的变化');
legend('\lambda_1','\lambda_2','Location','best');
grid on; box on;

% (b) 分岔图 (q vs. k)
subplot(2,1,2);
plot(bifData(:,1), bifData(:,2), '.', 'Color',[0.2,0.8,0.2], 'MarkerSize',2);
xlabel('k');
ylabel('q');
title('分岔图');
grid on; box on;